package gruppoSoluzione.mainService.services;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.TreeSet;

import gruppoSoluzione.mainService.HTTPService;
import gruppoSoluzione.mainService.ServiceDB;
import gruppoSoluzione.mainService.ServiceDBLog;
import gruppoSoluzione.mainService.ServiceDate;
import gruppoSoluzione.mainService.ServiceParams;
import gruppoSoluzione.mainService.data.ListStringWriter;
import gruppoSoluzione.mainService.data.ServiceDBData;
import gruppoSoluzione.mainService.data.ServiceDBXML;

/**
 * Servizio che restituisce il registro degli stock caricati o scaricati da un certo operatore
 * 
 * @author Alessandro Martinelli
 */
public class StockPerOperatoreService implements HTTPService{

	@Override
	public ArrayList<String> getServiceResult(ServiceParams params) {
	
		String data = params.getValue("data");
		String operatore = params.getValue("operatore");
		
		//Load server
		ServiceDBXML loader=new ServiceDBXML();
		ServiceDB db=new ServiceDB();
		loader.loadDB(db);
		
		ServiceDate serviceDate=new ServiceDate(data);
		Iterable<ServiceDBLog> logs=db.getLogsIterable(serviceDate);
		TreeSet<ServiceDBLog> filteredLogs=new TreeSet<ServiceDBLog>();
		for (ServiceDBLog serviceDBLog : logs) {
			if(serviceDBLog.getOperatore().equals(operatore)){
				filteredLogs.add(serviceDBLog);
			}
		}

		HttpMessageWriter writer=new HttpMessageWriter(MimeHTTP.XML);
		ArrayList<String> risposta=writer.createHttpMessageHeader();
		
		try {
			ServiceDBData dataWriter=new ServiceDBData();
			dataWriter.writeDB(new ListStringWriter(risposta), filteredLogs);
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		return risposta;
	}
}
